package main

import (
	"fmt"
)

///**
//执行用时：36 ms, 在所有 Go 提交中击败了13.31%的用户
//内存消耗：3.6 MB, 在所有 Go 提交中击败了95.57%的用户
// */
//func twoSum(nums []int, target int) []int {
//	for i, x := range nums {
//		for j := i + 1; j < len(nums); j++ {
//			if x + nums[j] == target {
//				return []int{i, j}
//			}
//		}
//	}
//	return nil
//}

/**
执行用时：4 ms, 在所有 Go 提交中击败了97.41%的用户
内存消耗：4.2 MB, 在所有 Go 提交中击败了54.35%的用户
*/
func twoSum(nums []int, target int) []int {
	hash := make(map[int]int)  // 定义map
	for i := 0; i < len(nums); i++ {
		r := target - nums[i]
		if _, ok := hash[r]; ok {
			return []int{hash[r], i}
		}
		hash[nums[i]] = i
	}
	return nil
}

func main() {
	var nums = []int{2, 7, 11, 15}
	fmt.Println(twoSum(nums, 9))
}
